/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 石方旭
 * Date: 2022-03-08
 * Time: 7:49
 */

import java.util.Arrays;
import java.util.Scanner;

public class Csdn {

    /**
     * 将一个正整数分解质因数。例如：输入90,打印出90=2*3*3*5。
     * @param args
     */
    public static void main1(String[] args) {
        System.out.print("请输入一个你要分解的正整数：");
        Scanner scanner = new Scanner(System.in);
        int input = scanner.nextInt();//获取输入的数字
        System.out.println();
        System.out.print(input + "=");
        for (int i = 2; i <= input; i++) {
            while (input % i == 0 && input != i) {
                input = input / i;
                System.out.print(i + "*");
            }

            if (input == i) {//上面的都不能整除，说明这是一个质数
                System.out.print(i);
                break;
            }
        }
        scanner.close();
    }


    public static void main2(String[] args) {
        System.out.print("请输入一个要分解质因数的数字:>");
        Scanner scan = new Scanner(System.in);
        int input =scan.nextInt();
        System.out.print(input +"=");
        //先找到最小的质数
        for(int i=2;i<=input;++i) {
            while(input%i==0&&input!=i) {
                System.out.print(i+"*");
                input/=i;
            }
            if(input==i) {
                System.out.print(i);
                break;
            }
        }
    }

    /**
     * 求最大公约数和最小公倍数
     * @param args
     */
    public static void main3(String[] args) {

        System.out.print("请输入两个你要操作的数：>");
        Scanner scan = new Scanner(System.in);
        int num1 =scan.nextInt();
        int num2 =scan.nextInt();
        int ret =num2*num1;
        int tmp=0;
        while((tmp=num1%num2)!=0) {
            num1=num2;
            num2=tmp;
        }
        int maxNum =num2;
        int minNUm =ret/maxNum;
        System.out.println("最大公约数为："+maxNum);
        System.out.println("最小公倍数为："+minNUm);
    }

    /**
     * 输入一行字符，分别统计出其英文字母、空格、数字和其它字符的个数。
     * @param args
     */
    public static void main4(String[] args) {
        int num =0;//统计数字个数
        int alphabet =0;//统计字母个数
        int space =0;//统计空格个数
        int otherChar=0;//统计其他字符的个数
        System.out.println("请输入字符串：>");
        Scanner scan = new Scanner(System.in);
        String string = scan.nextLine();
       char[] array = string.toCharArray();//将字符串转化成字符数组
        for(int i=0;i<array.length;++i) {
            if(array[i]>=48&&array[i]<=57) {
                //数字
                ++num;
            }else if(array[i]==32) {
                ++space;
            }else if((array[i]>=65&&array[i]<=90)||(array[i]>=97&&array[i]<=122)) {
                ++alphabet;
            }else {
                ++otherChar;
            }
        }
        System.out.println("数字：" + num + "个，字母：" + alphabet + "个，空格：" + space + "个，其他：" + otherChar + "个");
        scan.close();
    }

    /**
     * 求s=a+aa+aaa+aaaa+aa...a的值，其中a是一个数字。
     * 例如2+22+222+2222+22222(此时共有5个数相加)，几个数相加有键盘控制。输出结果的形式如：2+22+222=246；
     * @param args
     */
    public static void main6(String[] args) {
        System.out.println("请输入一个数字计算表达式：>");
        Scanner scan =new Scanner(System.in);
        int a =scan.nextInt();
        int sum =0;
        int c =0;
        for (int i = 0; i < 5; i++) {
            c =(c*10)+2;
            sum+=c;
        }
        System.out.println(sum);

    }

    public static void main7(String[] args) {
        int n = 0, a = 0;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入a的值:");
        a = scanner.nextInt();
        System.out.println("请输入n的值：");
        n = scanner.nextInt();
        int[] arr = new int[n];//创建数组长度为输入的项数
        int i = 1;//while循环初始化的值
        arr[0] = a;//数组的第一个值为3
        //把每一项的值赋值给数组里面的数
        while (i < n) {
            a *= 10;
            arr[i] = a + arr[i - 1];
            i++;
        }
        //求和
        int sum = 0;
        for (int s : arr) {
            sum += s;//累加求和
            if (s == arr[n - 1]) {
                System.out.print(s);
                break;//最后一次只输出结果
            }
            System.out.print(s + "+");//前面的值输出结果，后面还要加一个加号
        }
        System.out.println("=" + sum);//完美结束
    }

    public static void main8(String[] args) {
        System.out.println("请输入有一个数字a：>");
        Scanner scan = new Scanner(System.in);
        int a =scan.nextInt();
        System.out.println("请输入有一个数字n：>");
        int n =scan.nextInt();
        int tmp =0;
        int sum =0;
        for (int i = 0; i < n; i++) {
           tmp =tmp*10+a;
           sum+=tmp;
        }
        System.out.println(sum);
    }

    /**
     * 一个数如果恰好等于它的因子之和，这个数就称为"完数"。例如6=1＋2＋3.编程找出1000以内的所有完数。
     * @param args
     */

    public static void main9(String[] args) {
       //先找出这个数的因子都有哪些然后把它们想加起来看是否等于它本身

        for (int i = 1; i <= 100000; i++) {
            int sum =0;
            for (int j = 1; j < i; j++) {
                if(i%j==0) {
                   sum+=j;
                }
            }
            if(sum==i) {
                System.out.print(i+" ");
            }
        }
    }

}
